﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using haber.classes;
using Twitterizer;
using System.IO;
using System.Data.Linq.SqlClient;
using Facebook;
using System.Web.Security;
using System.Globalization;

namespace haber.Yonetim
{
    public class calisan
    {
        public string id { get; set; }
        public string username { get; set; }
        public string ad { get; set; }
        public string soyad { get; set; }
        public string resim { get; set; }
        public char aktif { get; set; }
        public int? gondermeSayisi { get; set; }
        public string eposta { get; set; }
        public int[] kategoriler { get; set; }
        public string meslek { get; set; }
    }

    public class retClass
    {
        public int val { get; set; }
        public string text { get; set; }

    }
    public class retClass2
    {
        public string val { get; set; }
        public string text { get; set; }

    }
    public class kategoriListesi
    {
        public int kategoriID { get; set; }
        public int ustKategoriID { get; set; }
        public string kategoriAdi { get; set; }
        public char kategoriTipi { get; set; }
        public string facebookUID { get; set; }
        public string twitterUID { get; set; }
        public string twitterToken { get; set; }
        public string twitterTokenSecret { get; set; }
        public char fbOk { get; set; }
        public char twitOk { get; set; }
        public string FBtoken { get; set; }
        public char ozelSayfa { get; set; }
        public int sira { get; set; }

    }
    
    public class altKategori
    {
        public int kategoriID { get; set; }
        public string kategoriAdi { get; set; }
        public string facebookAdi { get; set; }
        public string twitterAdi { get; set; }
        public int paylasmaSuresi { get; set; }
        public int tekrarSayisi { get; set; }
        public string logo { get; set; }
        public string FBtoken { get; set; }
        public string FBuid { get; set; }
        public int sira { get; set; }
        public string gpno { get; set; }

    }
    public class haberGonderim
    {
        public int id { get; set; }
        public string kategoriAdi { get; set; }
        public string gonderimZamani { get; set; }
    }
    public class kategoriPaylasimBilgileri
    {
        public int kategoriID { get; set; }
        public string fbUID { get; set; }
        public string fbToken { get; set; }
        public string twitUID { get; set; }
        public string twitToken { get; set; }
        public string userName { get; set; }
        public string pageToken { get; set; }
        
    }

    public class haberClass
    {
        public int haberID{ get; set; }
        public string baslik { get; set; }
        public string ozet { get; set; }
        public string detay { get; set; }
        public char? haberTipi { get; set; }
        public string haberResmi { get; set; }
        public char bolgesel { get; set; }
        public List<haberEkClass> haberEkleri { get; set; }
        public List<haberGonderim> haberGonderim { get; set; }
        public int kategoriID { get; set; }
        public int? gonderimSayisi { get; set; }
        public char ekTipi { get; set; }
    }
    public class haberEkClass
    {
        public int ekID { get; set; }
        public int haberID { get; set; }
        public string Ek { get; set; }
        public char tip { get; set; }
    }

    public class tvProgramListesi
    {
        public int programID { get; set; }
        public string programAdi { get; set; }
        public string videoDosyasi { get; set; }
        public char varsayilan { get; set; }

    }

    public class tvYayinListesi
    {
        public int id { get; set; }
        public int yayinID { get; set; }
        public string programAdi { get; set; }
        public string videoDosyasi { get; set; }
        public string baslangicSaati { get; set; }
        public string bitisSaati { get; set; }
    }
    public class reklamYayinlari
    {
        public string yayin1 { get; set; }
        public string yayin2 { get; set; }
        public string tamboyresim { get; set; }
        public char y1Acik { get; set; }
        public char y2Acik { get; set; }
        public char tamboyAcik { get; set; }
        public long yarimboy1Toplam { get; set; }
        public long yarimboy2Toplam { get; set; }
        public long tamboytoplam { get; set; }
        public string reklamlink1 { get; set; }
        public string reklamlink2 { get; set; }
        public string tamboylink { get; set; }
        public string degisimZamani { get; set; }
    }
    public class anketCls
    {

        public int id { get; set; }
        public String anketAdi { get; set; }
        public String anketAciklama { get; set; }
        public char aktif { get; set; }
        public int kisiSayisi { get; set; }
        public string sira { get; set; }
    }

    public class kisiListesi
    {
        public int kisiID { get; set; }
        public string ad { get; set; }
        public string soyad { get; set; }
        public string resim { get; set; }
        public string video { get; set; }
        public string bilgi { get; set; }
    }
    public class kisiResimleri
    {
        public int resimID { get; set; }
        public string resimAdresi { get; set; }
    }
    public class anketAdayListesi
    {
        public int id { get; set; }
        public int kisiID { get; set; }
        public int anketID { get; set; }
        public string ad { get; set; }
        public string soyad { get; set; }
        public int aldigiOy { get; set; }
        public string sira { get; set; }

    }

    public class adresDefteriGetirClass{
        public int id { get; set; }
        public string ad { get; set; }
        public string soyad { get; set; }
        public string eposta { get; set; }
        public string gruplar { get; set; }
        public string meslek { get; set; }
    }
    public class GrupListesi
    {
        public int id { get; set; }
        public string ad { get; set; }
    }

    public class calisanListesi
    {
        public String id { get; set; }
        public string kullaniciAdi { get; set; }
    }
    public class kategoriYetkiliListesi
    {
        public int id { get; set; }
        public int kategoriID { get; set; }
        public Guid kullaniciID { get; set; }
        public string kullaniciAdi { get; set; }

    }
    public class ilanListesi
    {
        public int ilanID { get; set; }
        public string ilanMetni { get; set; }
    }
    public partial class yonetimFuncs : System.Web.UI.Page
    {
        
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        [WebMethod]
        public static string yazarSifreSifirla(Guid yazarID)
        {

            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                MembershipUser mu = Membership.GetUser(yazarID);
                if (mu != null)
                {
                    String yeniSifre = mu.ResetPassword();
                    return yeniSifre;
                }
                throw new Exception("Kullanıcı Seçiniz");
                
            };
        }
        [WebMethod]
        public static void facebookAnketGonder(string kategoriler, char duvar, string link,string anketadi)
        {
            String[] kats = kategoriler.Split(',');
            duvar = 'H';
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                foreach (var k in kats)
                {
                    var kat = from kate in dc.HaberKategorileris
                              where kate.KategoriID == int.Parse(k)
                              select kate;
                    HaberKategorileri hk = kat.First();
                    if (hk.FBToken != null && hk.FBToken != "")
                    {
                        FacebookClient fbClient = new FacebookClient(hk.FBToken); // Duvar
                        var args = new Dictionary<string, object>();
                        args["message"] = anketadi ;
                        args["link"] = link;
                        args["description"] = anketadi;
                        args["picture"] = "http://www.sosyalmedyahaber.org/anket.jpg";
                        args["caption"] = "http://www.sosyalmedyahaber.org" +anketadi;
                        if (duvar == 'H' || duvar == 'P')
                        {
                            fbClient.Post("/" + hk.FBUID + "/feed", args);
                        }
                        if (duvar == 'H' || duvar == 'S')
                        {
                            fbClient = new FacebookClient(hk.FBPageToken);
                            fbClient.Post("/" + hk.FBPageID + "/feed", args);
                        }
                    }
                }
            };
        }
        [WebMethod]
        public static void facebookReklamGonder(string resim,string kategoriler, char duvar,string link)
        {
            String[] kats = kategoriler.Split(',');
            duvar = 'H';
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
               
                foreach (var k in kats)
                {
                    var kat = from kate in dc.HaberKategorileris
                              where kate.KategoriID == int.Parse(k)
                              select kate;
                    HaberKategorileri hk = kat.First();
                    if (hk.FBToken != null && hk.FBToken != "")
                    {
                        FacebookClient fbClient = new FacebookClient(hk.FBToken); // Duvar
                        var args = new Dictionary<string, object>();
                        args["message"] = "Sosyal Medya Haber";
                        args["link"] = link;
                        args["description"] = link;
                        args["picture"] = "http://www.sosyalmedyahaber.org"+resim;
                        args["caption"] = "http://www.sosyalmedyahaber.org";
                        if (duvar == 'H' || duvar == 'P')
                        {
                            fbClient.Post("/" + hk.FBUID + "/feed", args);
                        }
                        if (duvar == 'H' || duvar == 'S')
                        {
                            fbClient = new FacebookClient(hk.FBPageToken);
                            fbClient.Post("/" + hk.FBPageID + "/feed", args);
                        }
                    }
                }
            };
        }
     
        [WebMethod]
        public static void facebookGonder(int haberID, string kategoriler,char duvar)
        {
            String[] kats = kategoriler.Split(',');

            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                var hbr = from h in dc.Habers
                          where h.HaberID == haberID
                          select h;
                Haber haber = hbr.First();
                String haberResmi = "http://www.sosyalmedyahaber.org/video.png";
                var eks = from e in dc.HaberEklers
                          where e.HaberID == haberID
                          select e;
                if (eks.Count() > 0)
                {
                    List<HaberEkler> he = eks.ToList();
                    if (he.ElementAt(0).Tip == 'R')
                    {
                        haberResmi = "http://www.sosyalmedyahaber.org/haberEkleri/" + haberID + "/" + he.ElementAt(0).Ek;
                    }
                }
                foreach (var k in kats)
                {
                    var kat = from kate in dc.HaberKategorileris
                              where kate.KategoriID == int.Parse(k)
                              select kate;
                    HaberKategorileri hk = kat.First();
                    if (hk.FBToken != null && hk.FBToken != "")
                    {
                        FacebookClient fbClient = new FacebookClient(hk.FBToken); // Duvar
                        var args = new Dictionary<string, object>();
                        args["message"] = "Sosyal Medya Haber";
                        args["link"] = "http://www.sosyalmedyahaber.org/Default.aspx?hid=" + haberID + "&katid=" + k;
                        args["description"] = haber.Ozet;
                        args["picture"] = haberResmi;
                        args["caption"] = "http://www.sosyalmedyahaber.org";
                        if (duvar == 'H' || duvar == 'P')
                        {
                            fbClient.Post("/" + hk.FBUID + "/feed", args);
                        }
                        if (duvar == 'H' || duvar =='S') { 
                            fbClient = new FacebookClient(hk.FBPageToken); 
                            fbClient.Post("/" + hk.FBPageID + "/feed", args);
                        }
                    }
                }
            };
        }
        [WebMethod]
        public static string facebookToplamiYaz(int sayfa)
        {
            return statics.facebookToplamiGetirV2(sayfa);
        }

        [WebMethod] 
        public static string sayilariGuncelle()
        {
          return statics.sosyalkullanicisayilari();
        }
        [WebMethod]
        public static void anketYayinlaYayindanKaldir(int anketID)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var ankets = from ank in dc.Anketlers
                                 where ank.ID == anketID
                                 select ank;
                    if (ankets.First().Yayinlansin == 'T')
                    {
                        ankets.First().Yayinlansin = 'F';


                    }
                    else
                    {
                        ankets.First().Yayinlansin = 'T';
                    }
                    dc.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haberler Silinirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void YetkiSil(int kategoriID,char faceTwit)
        {
            if (statics.KullaniciGrubuGetir() != "Yonetici")
            {
                throw new Exception("Yönetici dışında yetki silinemez!");
            }

            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                try
                {
                    var kategori = from k in dc.HaberKategorileris
                                   where k.KategoriID == kategoriID
                                   select k;
                    if (faceTwit == 'F')
                    {
                        kategori.First().FBAdresi = null;
                        kategori.First().FBPageID = null;
                        kategori.First().FBPageName = null;
                        kategori.First().FBPageToken = null;
                        kategori.First().FBToken = null;
                        kategori.First().FBUID = null;
                    }
                    else
                    {
                        kategori.First().TwitterAccessToken = null;
                        kategori.First().TwitterAccessTokenSecret = null;
                        kategori.First().TwitterConsumerKey = null;
                        kategori.First().TwitterConsumerSecret = null;
                        kategori.First().TwitterScreenName = null;
                        kategori.First().twitUID = null;
                    }
                    dc.SubmitChanges();
                }
                catch (Exception ex)
                {
                    throw new Exception("Kategori Yetki Silinirken Hata : " + ex.Message);
                }
            }

        }
        [WebMethod]
        public static void topluHaberSil(string haberids)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    string[] habers = haberids.Split(',') ;
                    var haberler = from h in dc.Habers
                                   where  habers.Contains(h.HaberID.ToString())
                                   select h;
                    foreach (var hbr in haberler)
                    {
                        haberSil(hbr.HaberID);
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haberler Silinirken Hata : " + ex.Message);
            }
        }
     
        [WebMethod]
        public static void ilanSil(int ilanid)
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                var ilan = from i in dc.Ilanlars
                           where i.ID == ilanid
                           select i;
                dc.Ilanlars.DeleteAllOnSubmit(ilan);
                dc.SubmitChanges();


            }

        }
        [WebMethod]
        public static List<ilanListesi> ilanListele()
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                var ilan = from i in dc.Ilanlars
                           select new ilanListesi {ilanID = i.ID,ilanMetni = i.Ilan };

                if (ilan.Count() > 0)
                {
                    return ilan.ToList();
                }
                else
                {
                    return null;
                }


            }

        }
        [WebMethod]
        public static void ilanEkle(string ilanMetni)
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                Ilanlar i = new Ilanlar();
                i.Ilan = ilanMetni;
                dc.Ilanlars.InsertOnSubmit(i);
                dc.SubmitChanges();
                           

            }

        }
        [WebMethod]
        public static void ilanMetniGuncelle(string ilanMetni)
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                var ilan = from i in dc.ILANMETNIs
                           where i.ID == 1
                           select i;
                ilan.First().ILANMETNI1 = ilanMetni;
                dc.SubmitChanges();

            }

        }
        [WebMethod]
        public static string ilanMetniGetir()
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                var ilan = from i in dc.ILANMETNIs
                           where i.ID == 1
                           select i;
                return ilan.First().ILANMETNI1;
                

            }
       }
        [WebMethod]
        public static void kategoriLogoGuncelle(string url,int kategoriID)
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {

                var k = from kat in dc.HaberKategorileris
                        where kat.KategoriID == kategoriID
                        select kat;
                HaberKategorileri hk = k.First();
                hk.Logo = url;
                dc.SubmitChanges();

            }

        }
        [WebMethod]
        public static List<retClass2> calisanListesiCmb()
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                Guid g = new Guid("0fbbdca0-d0c0-49c8-902f-a5e9f803106a");
                var calisanlar = from ca in dc.aspnet_UsersInRoles
                                 where ca.RoleId == g
                                 select ca.UserId;
                var calisan = from c in dc.aspnet_Users
                              where calisanlar.Contains(c.UserId)
                              select new retClass2 {text = c.UserName,val = c.UserId.ToString() };
                if (calisan.Count() > 0)
                {
                    return calisan.ToList();

                }
                else
                {
                    return null;
                }


            }

        }
        [WebMethod]
        public static List<calisanListesi> calisanListesi()
        {
            using(dcHaberDataContext dc = new dcHaberDataContext())
	        {
                Guid g = new Guid("0fbbdca0-d0c0-49c8-902f-a5e9f803106a");
                var calisanlar = from ca in dc.aspnet_UsersInRoles
                                 where ca.RoleId == g
                                 select ca.UserId;
                var calisan = from c in dc.aspnet_Users
                              where calisanlar.Contains(c.UserId)
                              select new calisanListesi {id = c.UserId.ToString(),kullaniciAdi=c.UserName };
                if (calisan.Count() > 0)
                {
                    return calisan.ToList();

                }
                else
                {
                    return null;
                }


	        }
             
        }
        [WebMethod]
        public static void calisanYetkiVer(Guid calisanid,int kategoriID)
        {
            if (statics.KullaniciGrubuGetir() != "Yonetici")
            {
                throw new Exception("Yönetici dışında kategori silemez!");
            }

            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                try
                {
                    KategoriYetki ky = new KategoriYetki();
                    ky.KategoriID = kategoriID;
                    ky.KullaniciID = calisanid;
                    dc.KategoriYetkis.InsertOnSubmit(ky);
                    dc.SubmitChanges();
                }
                catch (Exception ex)
                {
                    throw new Exception("Kategori Yetki Verirken Hata : " + ex.Message);
                }   
            }

        }
        [WebMethod]
          public static void calisanYetkiSil(Guid calisanid,int kategoriID)
        {
            if (statics.KullaniciGrubuGetir() != "Yonetici")
            {
                throw new Exception("Yönetici dışında kategori silemez!");
            }

            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                try
                {
                    var kat = from k in dc.KategoriYetkis
                              where k.KullaniciID == calisanid && k.KategoriID == kategoriID
                              select k;
                    dc.KategoriYetkis.DeleteAllOnSubmit(kat);
                    dc.SubmitChanges();
                }
                catch (Exception ex)
                {
                    throw new Exception("Kategori Yetki Silinirken Hata : " + ex.Message);
                }   
            }

        }
        [WebMethod]
        public static void calisanYarat(string username,string email,string pass,string resim,int? gondermeSayisi,char aktif,string meslek)
        {
            if (statics.KullaniciGrubuGetir() != "Yonetici")
            {
                throw new Exception("Yönetici dışındaişlem yapılamaz!");
            }

            MembershipCreateStatus durum = new MembershipCreateStatus() ;
            try
            {
                MembershipUser user = Membership.CreateUser(username, pass, email, "Calisan", "Calisan", true, out durum);
                Roles.AddUserToRole(user.UserName, "Calisan");
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    YazarBilgi yb = new YazarBilgi();
                    yb.GondermeSayisi = gondermeSayisi;
                    yb.YazarResim = resim;
                    yb.YazarYetkiAktif = aktif;
                    yb.YazarID = (Guid)user.ProviderUserKey;
                    yb.Meslek = meslek;
                    dc.YazarBilgis.InsertOnSubmit(yb);
                    dc.SubmitChanges();
                }
            }
            catch (Exception)
            {
                string hata = HataBul(durum);
                throw new Exception(hata);
            }
            
        }
        
        
        [WebMethod]
        public static calisan calisanGetir(string uid)
        {
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
               

                var calisan = from c in dc.aspnet_Users
                              join b in dc.YazarBilgis on c.UserId equals b.YazarID
                              where c.UserId == Guid.Parse(uid)
                              select new calisan {username = c.UserName,eposta = c.aspnet_Membership.Email,gondermeSayisi = b.GondermeSayisi,id = c.UserId.ToString(),resim = b.YazarResim,aktif= b.YazarYetkiAktif,meslek=b.Meslek };
                if (calisan.Count() > 0)
                {
                    calisan c = calisan.First();
                    var kats = from k in dc.KategoriYetkis
                               where k.KullaniciID == Guid.Parse(uid)
                               select k.KategoriID;
                    if (kats.Count() > 0)
                    {
                        c.kategoriler = kats.ToArray();
                    }
                    return c;
                }
                else
                {
                    return null;
                }


            }
        }

        [WebMethod]
        public static void calisanDegistir(string uid,string username, string email, string pass, string resim, int? gondermeSayisi, char aktif,string kategoriler,string meslek)
        {
            if (statics.KullaniciGrubuGetir() != "Yonetici")
            {
                throw new Exception("Yönetici dışındaişlem yapılamaz!");
            }

          
            try
            {
                MembershipUser user = Membership.GetUser(Guid.Parse(uid));
                
                user.Email = email;
                
                //Roles.AddUserToRole(user.UserName, "Calisan");
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var ybl = from y in dc.YazarBilgis
                             where y.YazarID == Guid.Parse(uid)
                             select y;
                    YazarBilgi yb = ybl.First();
                    yb.GondermeSayisi = gondermeSayisi;
                    yb.YazarResim = resim;
                    yb.YazarYetkiAktif = aktif;
                    yb.Meslek = meslek;
                    yb.YazarID = (Guid)user.ProviderUserKey;
                    dc.SubmitChanges();
                    if (aktif == 'T')
                    {
                        user.IsApproved = true;
                    }
                    else
                    {
                        user.IsApproved = false;
                    }
                    if (kategoriler != "" && kategoriler != null)
                    {
                        var eskiKategoriler = from k in dc.KategoriYetkis
                                              where k.KullaniciID == Guid.Parse(uid)
                                              select k;
                        dc.KategoriYetkis.DeleteAllOnSubmit(eskiKategoriler);
                        String[] kats = kategoriler.Split(',');
                        foreach (var i in kats)
                        {
                            KategoriYetki ky = new KategoriYetki();
                            ky.KullaniciID = Guid.Parse(uid);
                            ky.KategoriID = int.Parse(i);
                            dc.KategoriYetkis.InsertOnSubmit(ky);

                        }
                        dc.SubmitChanges();

                    }

                }
            }
            catch (Exception)
            {
               
                throw new Exception("Kullanıcı Değiştirilirken Hata");
            }

        }

        [WebMethod]
        public static void calisanSil(string kullaniciAdi,Guid kullaniciID)
        {
            if (statics.KullaniciGrubuGetir() != "Yonetici")
            {
                throw new Exception("Yönetici dışında kategori silemez!");
            }

            try
            {
             
             using(dcHaberDataContext dc = new dcHaberDataContext())
	          {
                  var detay = from d in dc.KategoriYetkis
                              where d.KullaniciID == kullaniciID
                              select d;
                  dc.KategoriYetkis.DeleteAllOnSubmit(detay);
                  dc.SubmitChanges();
                  var kd = from k in dc.YazarBilgis
                           where k.YazarID == kullaniciID
                           select k;
                  dc.YazarBilgis.DeleteAllOnSubmit(kd);
                  dc.SubmitChanges();
	          }
                
                Membership.DeleteUser(kullaniciAdi);

            }
            catch (Exception)
            {
                
                throw new Exception("Kullanıcı Silinemedi");
            }

        }
                [WebMethod]
        public static List<kategoriYetkiliListesi> kategoriYetkilileri(int kategoriID)
        {
            MembershipCreateStatus durum = new MembershipCreateStatus();
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var kat = from k in dc.KategoriYetkis
                              where k.KategoriID == kategoriID
                              select new kategoriYetkiliListesi { id = k.YetkiID, kategoriID = k.KategoriID, kullaniciAdi = k.aspnet_User.UserName, kullaniciID = k.KullaniciID };
                    if (kat.Count() > 0)
                    {
                        return kat.ToList();
                    }
                    else
                    {
                        return null;
                             
                    }
                }
            }
            catch (Exception)
            {
                string hata = HataBul(durum);
                throw new Exception(hata);
            }

        }
        


        public static string HataBul(MembershipCreateStatus status)
        {
            switch (status)
            {
                case MembershipCreateStatus.DuplicateUserName:
                    return "Kullanıcı adı kullanımda. Lütfen başka bir kullanıcı adı seçiniz.";

                case MembershipCreateStatus.DuplicateEmail:
                    return "Email adresi zaten sistemde kayıtlı. Lütfen başka bir email adresi giriniz. .";

                case MembershipCreateStatus.InvalidPassword:
                    return "Hatalı bir şifre girdiniz. Daha uzun bir şifre girmeyi deneyiniz.";

                case MembershipCreateStatus.InvalidEmail:
                    return "Hatalı bir E-Mail adresi girdiniz. Lütfen yeniden deneyiniz.";

                case MembershipCreateStatus.InvalidAnswer:
                    return "Şifre hatırlatma cevabı hatalı. ";

                case MembershipCreateStatus.InvalidQuestion:
                    return "Şifre hatırlatma sorusu hatalı. ";

                case MembershipCreateStatus.InvalidUserName:
                    return "Kullanıcı adınız hatalı. Lütfen düzeltip tekrar deneyiniz.";

                case MembershipCreateStatus.ProviderError:
                    return "Sağlayıcı hatası, lütfen sistem yöneticinize haber veriniz.";

                case MembershipCreateStatus.UserRejected:
                    return "Kullanıcı kaydı reddedildi.Lütfen giriş alanlarını kontrol edip yeniden deneyiniz.";

                default:
                    return "Bir sorun oluştu. Lütfen giriş alanlarını kontrol edip yeniden deneyiniz.Sorun devam ederse lütfen sistem yöneticinize haber veriniz.";
            }
        }
        public static int facebookTemizle()
        {
            int j = 0;
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
              
                var kategoriler = from k in dc.HaberKategorileris
                                  where k.FBToken != null
                                  select k;
                foreach (var kat in kategoriler)
                {
                    var fb = new FacebookClient(kat.FBToken);
                    string arkadaslari = string.Format("SELECT uid2 FROM friend WHERE uid1='{0}'", kat.FBUID);
                    dynamic result = fb.Query(arkadaslari);

                    var sb = new FacebookClient(kat.FBToken);
                    string sayfalari = string.Format("SELECT page_id, type from page_admin WHERE uid='{0}'", kat.FBUID);
                    dynamic sayfaresult = fb.Query(sayfalari);

                    if (sayfaresult.Length > 0)
                    {
                       
                        foreach (dynamic arkadas in arkadaslari)
                        {
                            var sf = new FacebookClient(kat.FBToken);
                            string sayfaFanlari = string.Format("SELECT page_id, type from page_fab WHERE uid='{0}'", arkadas.uid2);
                            dynamic sayfaFanls = fb.Query(sayfaFanlari);
                            if (sayfaFanls.Length > 0)
                            {
                                j = j + 1;
                            }
                        }
                        
                    }
                   
                }
               

            }
            return j;
        }
        public static int facebookMesajAt(string kategoriIDs,int haberID)
        {
            int j = 0;
            using (dcHaberDataContext dc = new dcHaberDataContext())
            {
                string [] kats = kategoriIDs.Split(',');
                var kategoriler = from k in dc.HaberKategorileris
                                  where k.FBToken != null && kats.Contains(k.KategoriID.ToString())
                                  select k;
                foreach (var kat in kategoriler)
                {
                    var fb = new FacebookClient(kat.FBToken);
                    string arkadaslari = string.Format("SELECT uid2 FROM friend WHERE uid1='{0}'", kat.FBUID);
                    dynamic result = fb.Query(arkadaslari);

                    
                

                        foreach (dynamic arkadas in arkadaslari)
                        {
                            
                            var sf = new FacebookClient(kat.FBToken);
                            string sayfaFanlari = string.Format("SELECT page_id, type from page_fab WHERE uid='{0}'", arkadas.uid2);
                            dynamic sayfaFanls = fb.Query(sayfaFanlari);
                            if (sayfaFanls.Length > 0)
                            {
                                j = j + 1;
                            }


                        }

                    

                }


            }
            return j;
        }
        [WebMethod]
        public static List<haberClass> haberAraV2(char bolgesel, string baslik, string kategoriler)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {


                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        if (statics.KullaniciGrubuGetir() == "Yonetici")
                        {
                            var haberler = from h in dc.Habers
                                           join k in dc.HaberGonderims on h.HaberID equals k.HaberID into c
                                           from b in c.DefaultIfEmpty()
                                           where h.GenelBolgesel == bolgesel && SqlMethods.Like(h.Baslik.ToLower(), "%" + baslik.ToLower() + "%")
                                           orderby h.Baslik, h.OlusturmaTarihi descending
                                           select new haberClass { haberID = h.HaberID, baslik = h.Baslik, ozet = h.Ozet, haberTipi = h.HaberTipi, haberResmi = h.HaberResim, kategoriID = b.KategoriID == null ? -2 : b.KategoriID };
                            if (haberler.Count() > 0)
                            {
                                if (kategoriler != "")
                                {
                                    string[] katarr = kategoriler.Split(',');
                                    haberler = haberler.Where(t => katarr.Contains(t.kategoriID.ToString()));

                                }
                                List<haberClass> hc = haberler.Distinct().ToList();
                                foreach (haberClass hbc in hc)
                                {

                                    var haberEkleri = from he in dc.HaberEklers
                                                      where he.HaberID == hbc.haberID
                                                      select new haberEkClass { haberID = he.HaberID, Ek = he.Ek, ekID = he.ID, tip = he.Tip };

                                    if (haberEkleri.Count() > 0)
                                    {
                                        hbc.haberEkleri = haberEkleri.ToList();
                                    }

                                    var haberGonder = from hg in dc.HaberGonderims
                                                      where hg.HaberID == hbc.haberID
                                                      select new haberGonderim { id = hg.ID, kategoriAdi = hg.HaberKategorileri.KategoriAdi, gonderimZamani = hg.OlusturmaTarihi.ToShortDateString() };
                                    if (haberGonder.Count() > 0)
                                    {
                                        hbc.haberGonderim = haberGonder.ToList();
                                    }

                                }

                                return hc;
                            }
                            else
                            {
                                return null;
                            }

                        }
                        else
                        {
                            var haberler = from h in dc.Habers
                                           join k in dc.HaberGonderims on h.HaberID equals k.HaberID into c
                                           from b in c.DefaultIfEmpty()
                                           where h.OlusturanKullanici == statics.kullaniciGetir() && h.GenelBolgesel == bolgesel && SqlMethods.Like(h.Baslik.ToLower(), "%" + baslik.ToLower() + "%")
                                           orderby h.Baslik, h.OlusturmaTarihi descending
                                           select new haberClass { haberID = h.HaberID, baslik = h.Baslik, ozet = h.Ozet, haberTipi = h.HaberTipi, haberResmi = h.HaberResim, kategoriID = b.KategoriID == null ? -2 : b.KategoriID };
                            if (haberler.Count() > 0)
                            {
                                if (kategoriler != "")
                                {
                                    string[] katarr = kategoriler.Split(',');
                                    haberler = haberler.Where(t => katarr.Contains(t.kategoriID.ToString()));

                                }
                                List<haberClass> hc = haberler.ToList();
                                foreach (haberClass hbc in hc)
                                {

                                    var haberEkleri = from he in dc.HaberEklers
                                                      where he.HaberID == hbc.haberID
                                                      select new haberEkClass { haberID = he.HaberID, Ek = he.Ek, ekID = he.ID, tip = he.Tip };

                                    if (haberEkleri.Count() > 0)
                                    {
                                        hbc.haberEkleri = haberEkleri.ToList();
                                    }

                                    var haberGonder = from hg in dc.HaberGonderims
                                                      where hg.HaberID == hbc.haberID
                                                      select new haberGonderim { id = hg.ID, kategoriAdi = hg.HaberKategorileri.KategoriAdi, gonderimZamani = hg.OlusturmaTarihi.ToShortDateString() };
                                    if (haberGonder.Count() > 0)
                                    {
                                        hbc.haberGonderim = haberGonder.ToList();
                                    }

                                }

                                return hc;
                            }
                            else
                            {
                                return null;
                            }
                        }


                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<haberClass> haberAra(char bolgesel,string baslik,string kategoriler)
        {
            try
            {
                
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {


                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {
               
                        if (statics.KullaniciGrubuGetir() == "Yonetici")
                        {
                            

                            var haberler = from h in dc.Habers
                                           join k in dc.HaberGonderims on h.HaberID equals k.HaberID into c
                                           from b in c.DefaultIfEmpty()
                                           where h.GenelBolgesel == bolgesel && SqlMethods.Like(h.Baslik.ToLower(), "%" + baslik.ToLower() + "%") 
                                           orderby h.Baslik, h.OlusturmaTarihi descending
                                           select new haberClass { haberID = h.HaberID, baslik = h.Baslik, ozet = h.Ozet, haberTipi = h.HaberTipi, haberResmi = h.HaberResim, kategoriID = b.KategoriID == null ? -2 : b.KategoriID };
                            if (haberler.Count() > 0)
                            {
                                if (kategoriler != "")
                                {
                                    string[] katarr = kategoriler.Split(',');
                                    haberler = haberler.Where(t => katarr.Contains(t.kategoriID.ToString()));

                                }
                                List<haberClass> hc = haberler.ToList();
                                foreach (haberClass hbc in hc)
                                {

                                    var haberEkleri = from he in dc.HaberEklers
                                                      where he.HaberID == hbc.haberID
                                                      select new haberEkClass { haberID = he.HaberID, Ek = he.Ek, ekID = he.ID, tip = he.Tip };

                                    if (haberEkleri.Count() > 0)
                                    {
                                        hbc.haberEkleri = haberEkleri.ToList();
                                    }

                                    var haberGonder = from hg in dc.HaberGonderims
                                                      where hg.HaberID == hbc.haberID
                                                      select new haberGonderim { id = hg.ID, kategoriAdi = hg.HaberKategorileri.KategoriAdi, gonderimZamani = hg.OlusturmaTarihi.ToShortDateString() };
                                    if (haberGonder.Count() > 0)
                                    {
                                        hbc.haberGonderim = haberGonder.ToList();
                                    }

                                }

                                return hc;
                            }
                            else
                            {
                                return null;
                            }
           
                        }
                        else
                        {
                            var  haberler = from h in dc.Habers
                                       join k in dc.HaberGonderims on h.HaberID equals k.HaberID into c
                                       from b in c.DefaultIfEmpty()
                                       where h.OlusturanKullanici == statics.kullaniciGetir() && h.GenelBolgesel == bolgesel && SqlMethods.Like(h.Baslik.ToLower(), "%" + baslik.ToLower() + "%")
                                       orderby h.Baslik, h.OlusturmaTarihi descending
                                       select new haberClass { haberID = h.HaberID, baslik = h.Baslik, ozet = h.Ozet, haberTipi = h.HaberTipi, haberResmi = h.HaberResim, kategoriID = b.KategoriID == null ? -2 : b.KategoriID };
                            if (haberler.Count() > 0)
                            {
                                if (kategoriler != "")
                                {
                                    string[] katarr = kategoriler.Split(',');
                                    haberler = haberler.Where(t => katarr.Contains(t.kategoriID.ToString()));

                                }
                                List<haberClass> hc = haberler.ToList();
                                foreach (haberClass hbc in hc)
                                {

                                    var haberEkleri = from he in dc.HaberEklers
                                                      where he.HaberID == hbc.haberID
                                                      select new haberEkClass { haberID = he.HaberID, Ek = he.Ek, ekID = he.ID, tip = he.Tip };

                                    if (haberEkleri.Count() > 0)
                                    {
                                        hbc.haberEkleri = haberEkleri.ToList();
                                    }

                                    var haberGonder = from hg in dc.HaberGonderims
                                                      where hg.HaberID == hbc.haberID
                                                      select new haberGonderim { id = hg.ID, kategoriAdi = hg.HaberKategorileri.KategoriAdi, gonderimZamani = hg.OlusturmaTarihi.ToShortDateString() };
                                    if (haberGonder.Count() > 0)
                                    {
                                        hbc.haberGonderim = haberGonder.ToList();
                                    }

                                }

                                return hc;
                            }
                            else
                            {
                                return null;
                            }
                        }
                      

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void tarihAraligindaHaberSil(string ilkTarih, string sonTarih)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    DateTime ilk = DateTime.Parse(ilkTarih);
                    DateTime son = DateTime.Parse(sonTarih);
                    var haberler = from h in dc.Habers
                                   where h.OlusturmaTarihi >= ilk && h.OlusturmaTarihi <= son
                                   select h;
                    foreach (var hbr in haberler)
	                {
                        haberSil(hbr.HaberID);
	                }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haberler Silinirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void anketleriYeniYilaAktar()
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    //var yilVarmi = from y in dc.AnketKisis
                    //               where y.Yil == yil
                    //               select y;
                    var maxYil = (from y in dc.AnketKisis
                                 select y.Yil).Max();

                    if (maxYil == 0 || maxYil == null )
                    {
                        throw new Exception("Sistem Hatası Aktarılacak Kayıt Yok");
                    }
                    else
                    {
                        
                        var yils = from y in dc.AnketKisis
                                       where y.Yil == maxYil.Value
                                       select y;

                        foreach (var yi  in yils)
                        {
                            AnketKisi ak = new AnketKisi();
                            ak.KisiID = yi.KisiID;
                            ak.OySayisi = 0;
                            ak.Yil = maxYil+1;
                            ak.AnketID = yi.AnketID;
                            dc.AnketKisis.InsertOnSubmit(ak);
                            
                        }
                        dc.SubmitChanges();
                    }

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Anketler Aktarılırken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void meslekGrubuSil(int id)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var meslekgrupluuyeler = from mu in dc.MesajMesleks
                                             where mu.MeslekGrubu == id
                                             select mu;
                    dc.MesajMesleks.DeleteAllOnSubmit(meslekgrupluuyeler);
                    var mes = from m in dc.MeslekGrubus
                              where m.ID == id
                              select m;
                    dc.MeslekGrubus.DeleteAllOnSubmit(mes);
                    dc.SubmitChanges();
                              
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void meslekGrubuEkle(string ad)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    MeslekGrubu mg = new MeslekGrubu();
                    mg.MeslekGrubuAdi = ad;
                    dc.MeslekGrubus.InsertOnSubmit(mg);
                    dc.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<GrupListesi> GruplariGetir()
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var meslek = from m in dc.Grups
                                 select new GrupListesi { id = m.id, ad = m.GrupAdi};
                    if (meslek.Count() > 0)
                    {
                        return meslek.ToList();
                    }
                    else
                    {
                        return null;
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<GrupListesi> meslekGruplariGetir()
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var meslek = from m in dc.MeslekGrubus
                                 select new GrupListesi {id = m.ID , ad = m.MeslekGrubuAdi };
                    if (meslek.Count() > 0)
                    {
                        return meslek.ToList();
                    }
                    else
                    {
                        return null;
                    }
                   

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<adresDefteriGetirClass> adresDefteriGetir()
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    
                    var adres = from a in dc.AdresDefteris
                                select new adresDefteriGetirClass {ad = a.ad ,eposta = a.eposta,id = a.id,soyad = a.soyad };
                    if (adres.Count() > 0)
                    {
                        var adresArr = adres.ToArray();
                        string adr = "";
                        for (int i = 0; i < adresArr.Length ; i++)
                        {
                            var adresGrup = from ag in dc.AdresDefteriGrups
                                            where ag.AdresID == adresArr[i].id
                                            select ag.GrupID;
                            if (adresGrup.Count() > 0)
                            {
                                foreach (var adrg in adresGrup)
                                {
                                    adr += adrg + ",";
                                }
                                adresArr[i].gruplar = adr;
                            }
                            string meslekk = "";
                            var meslegGrup = from mg in dc.AdresDefteriMesleks
                                             where mg.AdresID == adresArr[i].id
                                             select mg.MeslekID;
                            if (meslegGrup.Count() > 0)
                            {
                                foreach (var mesg in meslegGrup)
                                {
                                    meslekk += mesg + ",";
                                }
                                adresArr[i].meslek = meslekk;
                            }

                        }
                        return adresArr.ToList();
                    }
                    else
                    {

                        return null;
                    }
                    
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Kişi Eklenirken Hata : " + ex.Message);
            }
        }


        [WebMethod]
        public static void adresDefteriSil(int id)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var adres = from a in dc.AdresDefteris
                                where a.id == id
                                select a;
                    if (adres.Count() > 0)
                    {
                        var ag = from adg in dc.AdresDefteriGrups
                                 where adg.AdresID == id
                                 select adg;
                        dc.AdresDefteriGrups.DeleteAllOnSubmit(ag);
                        var amg = from m in dc.AdresDefteriMesleks
                                  where m.AdresID == id
                                  select m;
                        dc.AdresDefteriMesleks.DeleteAllOnSubmit(amg);
                        dc.AdresDefteris.DeleteAllOnSubmit(adres);
                        dc.SubmitChanges();
                    }
                                      

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Çıkarılırken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void adresDefteriDegistir(int id,string ad, string soyad, string eposta, string meslek, string grup)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var adr = from a in dc.AdresDefteris
                              where a.id == id
                              select a;
                    var adres = adr.First();
                    adres.ad = ad;
                    adres.soyad = soyad;
                    adres.eposta = eposta;
                    dc.SubmitChanges();
              

                    if (meslek != null)
                    {
                        var meslekL = from ml in dc.AdresDefteriMesleks
                                      where ml.AdresID == id
                                      select ml;
                        dc.AdresDefteriMesleks.DeleteAllOnSubmit(meslekL);
                        var mesArr = meslek.Split(',');
                        foreach (var m in mesArr)
                        {
                            if (m != "")
                            {
                                AdresDefteriMeslek am = new AdresDefteriMeslek();
                                am.AdresID = adres.id;
                                am.MeslekID = int.Parse(m);
                                dc.AdresDefteriMesleks.InsertOnSubmit(am);
                                dc.SubmitChanges();

                            }
                        }
                    }
                    if (grup != null)
                    {
                        var grupL = from ml in dc.AdresDefteriGrups
                                      where ml.AdresID == id
                                      select ml;
                        dc.AdresDefteriGrups.DeleteAllOnSubmit(grupL);

                        var grupArr = grup.Split(',');
                        foreach (var g in grupArr)
                        {
                            if (g != "")
                            {
                                AdresDefteriGrup agg = new AdresDefteriGrup();
                                agg.GrupID = int.Parse(g);
                                agg.AdresID = adres.id;
                                dc.AdresDefteriGrups.InsertOnSubmit(agg);
                                dc.SubmitChanges();

                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Çıkarılırken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void adresDefterineEkle(string ad,string soyad,string eposta,string meslek,string grup)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    AdresDefteri adres = new AdresDefteri();
                    adres.ad = ad;
                    adres.soyad = soyad;
                    adres.eposta = eposta;
                    dc.AdresDefteris.InsertOnSubmit(adres);
                    dc.SubmitChanges();
                    if (meslek != null)
                    {
                        var mesArr = meslek.Split(',');
                        foreach (var m in mesArr)
                        {
                            if (m != "") { 
                                AdresDefteriMeslek am = new AdresDefteriMeslek();
                                am.AdresID = adres.id;
                                am.MeslekID = int.Parse(m);
                                dc.AdresDefteriMesleks.InsertOnSubmit(am);
                                dc.SubmitChanges();

                            }
                        }
                    }
                    if (grup != null)
                    {

                        var grupArr = grup.Split(',');
                        foreach (var  g in grupArr)
                        {
                            if (g != "")
                            {
                                AdresDefteriGrup agg = new AdresDefteriGrup();
                                agg.GrupID = int.Parse(g);
                                agg.AdresID = adres.id;
                                dc.AdresDefteriGrups.InsertOnSubmit(agg);
                                dc.SubmitChanges();

                            }
                        }
                    }
                     
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Çıkarılırken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static void grupKisiCikar(int grupID, int kisiID)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var adg = from a in dc.AdresDefteriGrups
                              where a.AdresID == kisiID && a.GrupID == grupID
                              select a;
                    dc.AdresDefteriGrups.DeleteAllOnSubmit(adg);
                    dc.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Çıkarılırken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void grupKisiEkle(int grupID,int kisiID)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    AdresDefteriGrup ag = new AdresDefteriGrup();
                    ag.GrupID = grupID;
                    ag.AdresID = kisiID;
                    dc.AdresDefteriGrups.InsertOnSubmit(ag);
                    dc.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Kişi Eklenirken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static void grupSil(int grupID)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var grup = from g in dc.Grups
                               where g.id == grupID
                               select g;
                    if (grup.Count() > 0)
                    {
                        var adres = from a in dc.AdresDefteriGrups
                                    where a.GrupID == grupID
                                    select a;
                        dc.AdresDefteriGrups.DeleteAllOnSubmit(adres);
                        dc.Grups.DeleteAllOnSubmit(grup);
                        dc.SubmitChanges();
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Grup Silinirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void grupEkle(string grupadi)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici Hakları Gerekli");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    Grup g = new Grup();
                    g.GrupAdi = grupadi;
                    dc.Grups.InsertOnSubmit(g);
                    dc.SubmitChanges();
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<anketAdayListesi> anketTumAdayListele(int anketid)
        {
            try
            {

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    if (anketid > -1)
                    {
                        var adaylar = from a in dc.AnketKisis
                                      where a.AnketID == anketid
                                      select a.KisiID;
                        if (adaylar.Count() > 0)
                        {
                            var kisiler = from k in dc.Kisilers
                                          where !adaylar.Contains(k.ID)
                                          select new anketAdayListesi {ad = k.Ad,soyad = k.Soyad,kisiID = k.ID};
                            if (kisiler.Count() > 0)
                            {
                                return kisiler.ToList();
                            }
                            else
                            {
                                return null;
                            }
                        }
                        else
                        {
                            var kisiler = from k in dc.Kisilers
                                      select new anketAdayListesi { ad = k.Ad, soyad = k.Soyad, kisiID = k.ID };
                            if (kisiler.Count() > 0)
                            {
                                return kisiler.ToList();
                            }
                            else
                            {
                                return null;
                            }
                        }
                    }
                    else
                    {
                        var kisiler = from k in dc.Kisilers                                    
                                      select new anketAdayListesi { ad = k.Ad, soyad = k.Soyad, kisiID = k.ID };
                        if (kisiler.Count() > 0)
                        {
                            return kisiler.ToList();
                        }
                        else
                        {
                            return null;
                        }
                    }

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<anketAdayListesi> anketAdayListele(int anketid)
        {
            try
            {
                
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {                    
                    var adaylar = from a in dc.AnketKisis
                                  where a.AnketID == anketid
                                  select new anketAdayListesi{id=a.ID, ad = a.Kisiler.Ad,soyad = a.Kisiler.Soyad,aldigiOy=a.OySayisi,anketID = a.AnketID,kisiID=a.KisiID };
                    if (adaylar.Count() > 0)
                    {
                        return adaylar.ToList();
                    }
                    else
                    {
                        return null;
                    }

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static void kisiSil(int kisiID)
        {
          
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var ki = from k in dc.Kisilers
                                 where k.ID == kisiID
                                 select k;
                        if (ki.Count() > 0)
                        {
                            dc.Kisilers.DeleteAllOnSubmit(ki);
                            dc.SubmitChanges();

                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Silinirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void kisiResimSil(int resimID)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var kr = from k in dc.KisiResims
                                 where k.ID == resimID
                                 select k;
                        dc.KisiResims.DeleteAllOnSubmit(kr);
                        dc.SubmitChanges();

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<kisiResimleri> kisiResimleriGetir(int kisiID)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var ki = from k in dc.KisiResims
                                 where k.KisiID == kisiID
                                 select new kisiResimleri {resimID = k.ID , resimAdresi = k.Resim};
                        if (ki.Count() > 0)
                        {
                            return ki.ToList();

                        }
                        else
                        {
                            return null;
                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<kisiListesi> kisiListele()
        {
          
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var ki = from k in dc.Kisilers 
                                 select new kisiListesi {ad = k.Ad,soyad=k.Soyad,resim=k.Resim,kisiID = k.ID,bilgi = k.Bilgi,video = k.Video };
                        if (ki.Count() > 0)
                        {                          
                            return ki.ToList();

                        }
                        else
                        {
                            return null;
                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static kisiListesi kisiGetir(int id)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var ki = from k in dc.Kisilers
                                 where k.ID == id
                                 select new kisiListesi { ad = k.Ad, soyad = k.Soyad, kisiID = k.ID, bilgi = k.Bilgi, video = k.Video };
                        if (ki.Count() > 0)
                        {

                            kisiListesi kl = ki.First();
                            var resimler = from r in dc.KisiResims
                                           where r.KisiID == id
                                           select r.Resim;
                            string resims   = String.Join(",", resimler.ToArray());
                             kl.resim = resims;
                            return kl;

                        }
                        else
                        {
                            return null;
                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }



        [WebMethod]
        public static void kisiDegistir(int kisiID,string kisiAdi, string kisiSoyadi, string video, string resim, string bilgi)
        {
            if (video == "" || resim == "")
            {
                throw new Exception("Video/Resim bilgileri girilmelidir.");
            }
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                      
                        var ki = from k in dc.Kisilers
                                 where k.ID == kisiID
                                 select k;
                        
                        if (ki.Count() > 0)
                        {
                            Kisiler kisi = ki.First();
                            kisi.Ad = kisiAdi;
                            kisi.Soyad = kisiSoyadi;
                            //kisi.Resim = resim;
                            kisi.Bilgi = bilgi;
                            kisi.Video = video;
                            if (resim != "" && resim != null)
                            {
                                //var kisiresimler = from kr in dc.KisiResims
                                //                   where kr.KisiID == kisi.ID
                                //                   select kr;
                                //dc.KisiResims.DeleteAllOnSubmit(kisiresimler);
                                string[] resimler = resim.Split(',');
                                foreach (var res in resimler)
                                {
                                    KisiResim kres = new KisiResim();
                                    kres.KisiID = kisi.ID;
                                    kres.Resim = res;
                                    dc.KisiResims.InsertOnSubmit(kres);                                        
                                }
                            }


                            dc.SubmitChanges();

                        }
                        
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }



        [WebMethod]
        public static void kisiEkle(string kisiAdi, string kisiSoyadi,string video,string resim,string bilgi,int anketID)
        {
            //if (video == "" || resim == "")
            //{
            //  //  throw new Exception("Video/Resim bilgileri girilmelidir.");
            //}
           
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        Kisiler kisi = new Kisiler();
                        kisi.Ad = kisiAdi;
                        kisi.Soyad = kisiSoyadi;
                     
                        kisi.Bilgi = bilgi;
                        kisi.Video = video;
                        dc.Kisilers.InsertOnSubmit(kisi);
                        dc.SubmitChanges();
                        if (resim != "" && resim != null)
                        {
                            var kisiresimler = from kr in dc.KisiResims
                                               where kr.KisiID == kisi.ID
                                               select kr;
                            dc.KisiResims.DeleteAllOnSubmit(kisiresimler);
                            string[] resimler = resim.Split(',');
                            foreach (var res in resimler)
                            {
                                KisiResim kres = new KisiResim();
                                kres.KisiID = kisi.ID;
                                kres.Resim = res;
                                dc.KisiResims.InsertOnSubmit(kres);
                            }
                        }
                        var yl = from y in dc.AnketKisis
                                 select y.Yil;
                        
                        AnketKisi ak = new AnketKisi();
                        ak.AnketID = anketID;
                        ak.KisiID = kisi.ID;
                        ak.OySayisi = 0;
                        ak.Yil = yl.Max();
                        dc.AnketKisis.InsertOnSubmit(ak);
                        dc.SubmitChanges();
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kişi Eklenirken Hata : " + ex.Message);
            }
        }


        [WebMethod]
        public static List<anketCls> anketListele(char aktif)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {


                        var anket = from a in dc.Anketlers
                                    orderby a.Sira
                        select new anketCls {id = a.ID,anketAdi = a.AnketAdi,anketAciklama = a.AnketAciklamasi,aktif = a.Yayinlansin,kisiSayisi = a.AnketKisis.Count,sira = a.Sira.HasValue ? a.Sira.Value.ToString():null};
                        if (anket.Count() > 0)
                        {
                            return anket.ToList();

                        }
                        else { return null; }


                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Anket Değiştirilirken Hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void anketKisiSil(int id )
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        var anketkisi = from a in dc.AnketKisis
                                        where a.ID == id
                                        select a;
                        if (anketkisi.Count() > 0)
                        {
                            dc.AnketKisis.DeleteAllOnSubmit(anketkisi);
                            dc.SubmitChanges();
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Ankete Kişi Eklenirken Hata : " + ex.Message);
            }
        }


        [WebMethod]
        public static void anketKisiEkle(int anketID,int kisiID)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        AnketKisi akisi = new AnketKisi();
                        akisi.AnketID = anketID;
                        akisi.KisiID = kisiID;
                        akisi.OySayisi = 0;
                        akisi.Yil = DateTime.Now.Year;
                        dc.AnketKisis.InsertOnSubmit(akisi);
                        dc.SubmitChanges();
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Ankete Kişi Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void anketEkle(string anketAdi,string anketAciklama,char aktif)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {



                        Anketler anket = new Anketler();
                        anket.AnketAdi = anketAdi;
                        anket.AnketAciklamasi = anketAciklama;
                        anket.Yayinlansin = aktif;
                        dc.Anketlers.InsertOnSubmit(anket);
                        dc.SubmitChanges();
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Anket Eklenirken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static void anketSil(int anketID)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        var anket = from a in dc.Anketlers
                                    where a.ID == anketID
                                    select a;
                        if (anket.Count() > 0)
                        {
                            Anketler ank = anket.First();

                            var ao = from a in dc.AnketOYs
                                     where a.AnketID == ank.ID
                                     select a;
                            dc.AnketOYs.DeleteAllOnSubmit(ao);
                            var ak = from a in dc.AnketKisis
                                     where a.AnketID == ank.ID
                                     select a;
                            dc.AnketKisis.DeleteAllOnSubmit(ak);

                            dc.Anketlers.DeleteAllOnSubmit(anket);
                            dc.SubmitChanges();

                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Anket Değiştirilirken Hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void anketDegistir(int anketID,string anketAdi, string anketAciklama, char aktif,string sira)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        
                        var anket = from a in dc.Anketlers
                                    where a.ID == anketID
                                    select a;
                        if (anket.Count() > 0) {
                            Anketler ank = anket.First();
                            ank.AnketAdi = anketAdi;
                            ank.AnketAciklamasi = anketAciklama;
                            ank.Yayinlansin = aktif;
                            if (sira != "")
                            {
                                ank.Sira = int.Parse(sira);
                            }
                            else
                            {
                                ank.Sira = null;
                            }
                            dc.SubmitChanges();
                        
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Anket Değiştirilirken Hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static void anketKategorisiBelirle(string kategoriID)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var tanim = from t in dc.Tanimlars
                                    where t.Tanım == "ANKETKATEGORI"
                                    select t;
                        if (tanim.Count() > 0)
                        {
                            tanim.First().Parametre = kategoriID;
                            dc.SubmitChanges();
                        }


                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Açılış Kategorisi Belirlenirken Hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void acilisKategorisiBelirle(string kategoriID)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var tanim = from t in dc.Tanimlars
                                    where t.Tanım == "ACILISKATEGORI"
                                    select t;
                        if (tanim.Count() > 0)
                        {
                            tanim.First().Parametre = kategoriID;
                            dc.SubmitChanges();
                        }


                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Açılış Kategorisi Belirlenirken Hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static string reklamTweetYayinla(string kategoriler,string link)
        {
            string err = "";
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        String[] kats = kategoriler.Split(',');

                        var tweets = from t in dc.HaberKategorileris
                                     where kats.Contains(t.KategoriID.ToString()) && t.TwitterAccessToken != null
                                     select t;
                    
                        if (tweets.Count() > 0)
                        {
                            twitterOauth to = new twitterOauth();
                            foreach (HaberKategorileri hk in tweets.ToList())
                            {
                                OAuthTokens ot = new OAuthTokens();
                                ot.AccessToken = hk.TwitterAccessToken;
                                ot.AccessTokenSecret = hk.TwitterAccessTokenSecret;
                                ot.ConsumerKey = to.ConsumerKey;
                                ot.ConsumerSecret = to.ConsumerSecret;
                                string h = "";
                             


                                h = link;
                                TwitterResponse<TwitterStatus> tr = TwitterStatus.Update(ot, h);

                                if (tr.Result == RequestResult.Success)
                                {
                                    // Tweet posted successfully!
                                    //_log.InfoFormat("Posted a tweet #{0}.", tweetResponse.ResponseObject.Id);
                                }
                                else
                                {
                                    err += tr.Result + "   /   " + tr.ErrorMessage;

                                }


                            }

                        }
                        return err;



                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static string haberTweetYayinla(int haberID, string kategoriler)
        {
            string err = "";
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        String[] kats = kategoriler.Split(',');
                        
                            var tweets = from t in dc.HaberKategorileris
                                         where kats.Contains(t.KategoriID.ToString()) && t.TwitterAccessToken != null
                                                      select t;
                            var haber = from h in dc.Habers
                                        where h.HaberID == haberID
                                        select h;
                            Haber hbr = haber.Single();
                            if (tweets.Count() > 0)
                            {
                                twitterOauth to = new twitterOauth();
                                foreach(HaberKategorileri hk in tweets.ToList()){        
                                    OAuthTokens ot = new OAuthTokens();
                                    ot.AccessToken = hk.TwitterAccessToken;
                                    ot.AccessTokenSecret = hk.TwitterAccessTokenSecret;
                                    ot.ConsumerKey = to.ConsumerKey;
                                    ot.ConsumerSecret = to.ConsumerSecret;
                                    string h = "";
                                    if (hbr.Baslik.Length > 120)
                                    {
                                        h = hbr.Baslik.Substring(0, 120);
                                    }
                                    else
                                    {
                                        h = hbr.Baslik;
                                    }
                                    
                                    
                                    h = h +" "+ hbr.KisaUrl;  
                                    TwitterResponse<TwitterStatus> tr = TwitterStatus.Update(ot, h);

                                if (tr.Result == RequestResult.Success)
                                {
                                    // Tweet posted successfully!
                                    //_log.InfoFormat("Posted a tweet #{0}.", tweetResponse.ResponseObject.Id);
                                }
                                else
                                {
                                    err += tr.Result + "   /   " + tr.ErrorMessage;
                                    
                                }


                                }
                                
                            }
                            return err;
                    
                      

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static string haberTweetMesajla(int haberID, string kategoriler)
        {
            string err = "";
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        String[] kats = kategoriler.Split(',');

                        var tweets = from t in dc.HaberKategorileris
                                     where kats.Contains(t.KategoriID.ToString()) && t.TwitterAccessToken != null
                                     select t;
                        var haber = from h in dc.Habers
                                    where h.HaberID == haberID
                                    select h;
                        Haber hbr = haber.Single();
                        if (tweets.Count() > 0)
                        {
                            twitterOauth to = new twitterOauth();
                            foreach (HaberKategorileri hk in tweets.ToList())
                            {
                                OAuthTokens ot = new OAuthTokens();
                                ot.AccessToken = hk.TwitterAccessToken;
                                ot.AccessTokenSecret = hk.TwitterAccessTokenSecret;
                                ot.ConsumerKey = to.ConsumerKey;
                                ot.ConsumerSecret = to.ConsumerSecret;
                                string h = "";
                                if (hbr.Baslik.Length > 120)
                                {
                                    h = hbr.Baslik.Substring(0, 120);
                                }
                                else
                                {
                                    h = hbr.Baslik;
                                }


                                h = h + " " + hbr.KisaUrl;
                               // TwitterResponse<TwitterStatus> tr = TwitterStatus.Update(ot, h);
                          
                                TwitterResponse<UserIdCollection> followersResponse = TwitterFriendship.FollowersIds(ot);
                                if (followersResponse.Result != RequestResult.Success)
                                {
                                    //ShowAndLogError(followersResponse.Result, followersResponse.ErrorMessage);
                                }
                                else
                                {
                                    //LookupUsersOptions lookupOptions = new LookupUsersOptions();
 
                                        // Loop through all of the follower user ids
                                        for (int index = 0; index < followersResponse.ResponseObject.Count; index++)
                                        {
                                            // We can only look up 100 users at a time
                                            //if (index % 100 == 0)
                                            //{
                                               // userLookupResponse = TwitterUser.Lookup(ot, lookupOptions);
                                                //if (userLookupResponse.Result == RequestResult.Success)
                                               // {
                                                    // Do something with the users
                                                  //  foreach (int un in lookupOptions.UserIds)
                                                  //  {
                                                TwitterDirectMessage.Send(ot, followersResponse.ResponseObject[index], h);
                                                  //  }
                                                //}
 
                                                // Clear the lookup user ids
                                                //lookupOptions.UserIds.Clear();
                                            //}
 
                                            //lookupOptions.UserIds.Add(followersResponse.ResponseObject[index]);
                                        }
 
                                        //userLookupResponse = TwitterUser.Lookup(ot, lookupOptions);
                                        //if (userLookupResponse.Result == RequestResult.Success)
                                        //{
                                        //    // Do something with the users
                                        //    foreach (int un in lookupOptions.UserIds)
                                        //    {
                                        //        TwitterDirectMessage.Send(ot, un, h);
                                        //    }
                                        //}
                                }

                            }

                        }
                        return err;
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Twitter Mesaj Yollanırken Hata  : " + ex.Message);
            }
        }
            [WebMethod]
        public static List<kategoriPaylasimBilgileri> kategoriBilgileriGetir(string kategoriler)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        String[] kats = kategoriler.Split(',');
                        

                            var haberBilgileri = from hb in dc.HaberKategorileris
                                                 where kats.Contains(hb.KategoriID.ToString())
                                                 select new kategoriPaylasimBilgileri {kategoriID =hb.KategoriID,fbToken = hb.FBToken,fbUID = hb.FBUID,twitToken = hb.TwitterAccessToken,twitUID= hb.TwitterScreenName,userName=hb.FBAdresi,pageToken = hb.FBPageToken };
                            if (haberBilgileri.Count() > 0)
                            {
                                return haberBilgileri.ToList();
                            }
                            else
                            {
                                return null;
                            }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
            }
        }
            [WebMethod]
            public static Boolean calisanKontrol()
            {
                if (statics.KullaniciGrubuGetir() == "Calisan")
                {
                    using (dcHaberDataContext dc = new dcHaberDataContext())
                    {

                        var kategoriSayisi = from ks in dc.KategoriYetkis
                                             where ks.KullaniciID == statics.kullaniciGetir()
                                             select ks;
                        int kSayisi = 0;
                        if (kategoriSayisi.Count() > 0)
                        {

                            kSayisi = kategoriSayisi.Count();
                        }

                    var yetki = from y in dc.YazarBilgis
                                where y.YazarID == statics.kullaniciGetir()
                                select y;
                    YazarBilgi yb = yetki.First();
                    if (yb.YazarYetkiAktif == 'F')
                    {
                        throw new Exception("Yetkiniz Yok Haber Gönderemezsiniz");
                    }
                    if (yb.GondermeSayisi != null)
                    {
                        var sayi = from s in dc.HaberGonderims
                                   where s.GonderenKullanici == statics.kullaniciGetir() &&
                                   s.OlusturmaTarihi.Date == DateTime.Now.Date
                                   select s;
                        if (sayi.Count() >= (yb.GondermeSayisi * kSayisi))
                        {
                            throw new Exception("Haber gönderme sayınız doldu. Haber Gönderemezsiniz");
                        }
                    }
                    }
                    
                }
                return true;
            }

        [WebMethod]
        public static void haberVTYayinla(int haberID, string kategoriler)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        if (statics.KullaniciGrubuGetir() == "Calisan")
                        {
                            var yetki = from y in dc.YazarBilgis
                                        where y.YazarID == statics.kullaniciGetir()
                                        select y;
                            YazarBilgi yb = yetki.First();
                            if (yb.YazarYetkiAktif == 'F')
                            {
                                throw new Exception("Yetkiniz Yok Haber Gönderemezsiniz");
                            }
                            if (yb.GondermeSayisi != null && yb.GondermeSayisi != 0)
                            {
                                var sayi = from s in dc.HaberGonderims
                                           where s.GonderenKullanici == statics.kullaniciGetir() &&
                                           s.OlusturmaTarihi.Date == DateTime.Now.Date
                                           select s;
                                if (sayi.Count() >= yb.GondermeSayisi)
                                {
                                    throw new Exception("Haber gönderme sayınız doldu. Haber Gönderemezsiniz");
                                }
                            }
                        }

                        String[] kats = kategoriler.Split(',');
                        foreach (String k in kats)
                        {
                            var oncedenGonderildimi = from og  in dc.HaberGonderims
                                                      where og.HaberID == haberID && og.KategoriID == int.Parse(k)
                                                          select og;

                            if (oncedenGonderildimi.Count() == 0)
                            {

                                HaberGonderim hg = new HaberGonderim();
                                hg.HaberID = haberID;
                                hg.KategoriID = int.Parse(k);
                                hg.OlusturmaTarihi = DateTime.Now;
                                hg.GonderenKullanici = statics.kullaniciGetir();
                                dc.HaberGonderims.InsertOnSubmit(hg);
                            }
                              
                        }
                        dc.SubmitChanges();

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static void gonderimSil(int gonderimId)
        {

            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {

                        var gonderim = from g in dc.HaberGonderims
                                       where g.ID == gonderimId
                                       select g;
                        if (gonderim.Count() > 0)
                        {
                            dc.HaberGonderims.DeleteAllOnSubmit(gonderim);
                            dc.SubmitChanges();
                        }

                                       


                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
            }
        }
        //[WebMethod]
        //public static void haberFacebookYayinla(int haberID, string kategoriler)
        //{

        //    try
        //    {
        //        using (dcHaberDataContext dc = new dcHaberDataContext())
        //        {

        //            if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
        //            {

        //                String[] kats = kategoriler.Split(',');
        //                foreach (String k in kats)
        //                {
        //                    var kategori = from kat in dc.HaberKategorileris
        //                                   where kat.KategoriID == int.Parse(k)
        //                                   select kat;
        //                    if (kategori.Count() > 0)
        //                    {
        //                        HaberKategorileri hk = kategori.Single();
                                
        //                    }
        //                }
        //                dc.SubmitChanges();

        //            }
        //            else
        //            {
        //                throw new Exception("Bu işlem için Yönetici/Çalışan yetkilerine sahip olmalısınız");
        //            }


        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
        //    }
        //}


        [WebMethod]
        public static void haberEkSil(int ekID)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {

                        var ek = from e in dc.HaberEklers
                                 where e.ID == ekID
                                 select e;
                        if (ek.Count() > 0)
                        {
                            dc.HaberEklers.DeleteOnSubmit(ek.Single());
                            dc.SubmitChanges();
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek silinirken hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static void haberEkEkle(int haberID, string ek)
        {
           
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                     
                        HaberEkler he = new HaberEkler();
                        he.HaberID = haberID;
                        he.Tip = statics.dosyaTipiDondur(ek);
                        he.Ek = ek;
                        dc.HaberEklers.InsertOnSubmit(he);

                        dc.SubmitChanges();


                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Habere  ek eklenirken hata  : " + ex.Message);
            }
        }


        [WebMethod]
        public static List<haberClass> sonxgundekihaberlerigetir(int gun,char bolgesel)
        {
            try
            {
                if (gun > 0)
                {
                    gun = gun * -1;
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {                
                    

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        var haberler = from h in dc.Habers
                                       where ((h.OlusturmaTarihi >= DateTime.Now.AddDays(gun)) && (h.OlusturmaTarihi < DateTime.Now.AddDays(1))) && h.GenelBolgesel == bolgesel
                                       select new haberClass { haberID = h.HaberID, baslik = h.Baslik, detay = h.Detay, ozet = h.Ozet, haberTipi = h.HaberTipi, haberResmi = h.HaberResim };
                        if (haberler.Count() > 0)
                        {
                            List<haberClass> hc = haberler.ToList();
                            foreach (haberClass hbc in hc)
                            {

                                var haberEkleri = from he in dc.HaberEklers
                                                  where he.HaberID == hbc.haberID
                                                  select new haberEkClass { haberID = he.HaberID, Ek = he.Ek, ekID = he.ID, tip = he.Tip };

                                if (haberEkleri.Count() > 0)
                                {
                                    hbc.haberEkleri = haberEkleri.ToList();
                                }

                                var haberGonder = from hg in dc.HaberGonderims
                                                  where hg.HaberID == hbc.haberID
                                                  select new haberGonderim {id = hg.ID,kategoriAdi=hg.HaberKategorileri.KategoriAdi,gonderimZamani= hg.OlusturmaTarihi.ToShortDateString() };
                                if (haberGonder.Count() > 0)
                                {
                                    hbc.haberGonderim = haberGonder.ToList();
                                }

                            }
                            
                            return hc;
                        }
                        else
                        {
                            return null;
                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void haberResimDegistir(int haberID,string resim)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        var haber = from h in dc.Habers
                                    where h.HaberID == haberID
                                    select h;
                        if (haber.Count() > 0)
                        {
                            Haber hbr = haber.Single();
                            hbr.HaberResim = resim;
                            dc.SubmitChanges();
                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static haberClass haberGetir(int haberID)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici" ||  statics.KullaniciGrubuGetir() == "Calisan")
                    {
                        var haberler = from h in dc.Habers
                                       where h.HaberID == haberID
                                       select new haberClass { haberID = h.HaberID, baslik = h.Baslik, detay = h.Detay, ozet = h.Ozet,haberTipi = h.HaberTipi,haberResmi = h.HaberResim,bolgesel = h.GenelBolgesel.HasValue?h.GenelBolgesel.Value:'G' };
                        if (haberler.Count() > 0)
                        {
                            var haberEkleri = from he in dc.HaberEklers
                                              where he.HaberID == haberID
                                              select new haberEkClass { haberID = he.HaberID, Ek = he.Ek, ekID = he.ID, tip = he.Tip };
                            haberClass hc = haberler.First();
                            if (haberEkleri.Count() > 0)
                            {
                                hc.haberEkleri = haberEkleri.ToList();
                                hc.ekTipi = hc.haberEkleri.ElementAt(0).tip;
                                if (hc.ekTipi == 'R')
                                {
                                    hc.haberResmi = hc.haberEkleri.ElementAt(0).Ek;
                                }
                                else
                                {
                                    hc.haberResmi = "video.png";
                                }
                            }
                            var haberGonder = from hg in dc.HaberGonderims
                                              where hg.HaberID == haberID
                                              select new haberGonderim { id = hg.ID, kategoriAdi = hg.HaberKategorileri.KategoriAdi, gonderimZamani = hg.OlusturmaTarihi.ToShortDateString() };
                            if (haberGonder.Count() > 0)
                            {
                                hc.haberGonderim = haberGonder.ToList();
                            }
                            return hc;
                        }
                        else
                        {
                            return null;
                        }

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }
        public static void haberGonderimZamanla(int hid,int adet)
        {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var haber = from h in dc.MesajZamans
                                where h.HaberID == hid
                                select h;
                    if (haber.Count() > 0)
                    {
                        haber.First().KalanGondermeAdedi = adet;
                        haber.First().SonrakiGondermeZamani = DateTime.Now.AddDays(1).AddMinutes(1);

                    }
                    else
                    {
                        MesajZaman mz = new MesajZaman();
                        mz.HaberID = hid;
                        mz.KalanGondermeAdedi = adet;
                        mz.SonrakiGondermeZamani = DateTime.Now.AddDays(1).AddMinutes(1);
                        dc.MesajZamans.InsertOnSubmit(mz);
                    }
                    
                    dc.SubmitChanges();
                }
        }

        [WebMethod]
        public static void haberDegistir(int haberID, string haberTipi, string baslik, string ozet, string detay,char bolgesel,int gondermeSayisi)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        
                        var hbr = from h in dc.Habers
                                  where h.HaberID == haberID
                                  select h;
                        if (hbr.Count() > 0)
                        {
                            if (ozet.Length > 500) { throw new Exception("Özet alanına en fazla 500 karakter giriş yapabilirsiniz."); }

                            Haber hb = hbr.Single();
                            hb.Baslik = baslik;
                            if (haberTipi == "H")
                            {
                                hb.Detay = detay;
                                hb.Ozet = ozet;
                            }
                            hb.HaberTipi = haberTipi.ToCharArray()[0];
                            hb.GenelBolgesel = bolgesel;
                            hb.DegistirmeTarihi = DateTime.Now;
                            hb.DegistirenKullanici = statics.kullaniciGetir();
                            
                            
                            dc.SubmitChanges();
                            if (gondermeSayisi > 1)
                            {
                                haberGonderimZamanla(hb.HaberID, gondermeSayisi);
                            }
                         
                        }
                        
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }
        
        [WebMethod]
        public static int haberEkle(string haberTipi, string baslik, string ozet, string detay, string resim, char bolgesel,int gondermeSayisi)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {


                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {
                        Haber hb = new Haber();
                        //CultureInfo ci = new CultureInfo("tr-TR",false);
                        hb.Baslik = baslik;
                        if (haberTipi == "H") { 
                            hb.Detay = detay;
                            hb.Ozet = ozet;
                        }
                        hb.HaberTipi = haberTipi.ToCharArray()[0];
                        hb.OlusturmaTarihi = DateTime.Now;
                        hb.OlusturanKullanici = statics.kullaniciGetir();
                        if (resim == "")
                        {
                            resim = "default.jpg";
                        }
                        hb.GenelBolgesel = bolgesel;
                        hb.HaberResim = resim;
                        dc.Habers.InsertOnSubmit(hb);
                        dc.SubmitChanges();
                        hb.KisaUrl = kisalt.Shorten("http://www.sosyalmedyahaber.org/Default.aspx?hid=" + hb.HaberID);
                        dc.SubmitChanges();
                        if (gondermeSayisi > 1)
                        {
                            haberGonderimZamanla(hb.HaberID, gondermeSayisi);

                        }
                        return  hb.HaberID;

                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void haberSil(int haberID)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {


                    if (statics.KullaniciGrubuGetir() == "Yonetici")
                    {
                        var haber = from h in dc.Habers
                                    where h.HaberID == haberID
                                    select h;
                        if (haber.Count() > 0)
                        {
                            var ekler = from he in dc.HaberEklers
                                        where he.HaberID == haberID
                                        select he;
                            if (ekler.Count() > 0)
                            {
                                foreach (var h in ekler)
	                            {
		                            statics.dosyaSil(HttpContext.Current.Server.MapPath("/haberEkleri/"+haberID+"/"+h.Ek));
                                }
                                dc.HaberEklers.DeleteAllOnSubmit(ekler);

                            }

                        }
                        var haberGonder = from hg in dc.HaberGonderims
                                          where hg.HaberID == haberID
                                          select hg;
                        dc.HaberGonderims.DeleteAllOnSubmit(haberGonder);
                        dc.Habers.DeleteAllOnSubmit(haber);
                        dc.SubmitChanges();
                    }
                    else
                    {

                        var haber = from h in dc.Habers
                                    where h.HaberID == haberID
                                    select h;

                        if (haber.Count() > 0)
                        {
                            if (haber.First().OlusturanKullanici == statics.kullaniciGetir())
                            {
                                var ekler = from he in dc.HaberEklers
                                            where he.HaberID == haberID
                                            select he;
                                if (ekler.Count() > 0)
                                {
                                    foreach (var h in ekler)
                                    {
                                        statics.dosyaSil(HttpContext.Current.Server.MapPath("/haberEkleri/" + haberID + "/" + h.Ek));
                                    }
                                    dc.HaberEklers.DeleteAllOnSubmit(ekler);

                                }

                            }
                            var haberGonder = from hg in dc.HaberGonderims
                                              where hg.HaberID == haberID
                                              select hg;
                            dc.HaberGonderims.DeleteAllOnSubmit(haberGonder);
                            dc.Habers.DeleteAllOnSubmit(haber);
                            dc.SubmitChanges();
                        }
                        else
                        {
                            throw new Exception("Ancak kendi oluşturduğunuz haberleri silebilirsiniz");
                        }
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Haber eklenirken hata  : " + ex.Message);
            }
        }
        [WebMethod]
        public static void altKategoriDegistir(int ID, string kategoriAdi, int paylasmaSuresi, int tekrarSayisi,int sira,string gpno)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.kategoriYetkiKontrol(ID))
                    {
                        var akat = from ak in dc.HaberKategorileris
                                   where ak.KategoriID == ID
                                   select ak;
                        if (sira == -1)
                        {
                            sira = 0;
                        }
                        if (akat.Count() > 0)
                        {
                            HaberKategorileri hk = akat.Single();
                            hk.KategoriAdi = kategoriAdi;
                            hk.PaylaşmaSuresi =paylasmaSuresi;
                            hk.TekrarSayisi = tekrarSayisi;
                            hk.Sira = sira;
                            hk.GplusNo = gpno;                         
                            dc.SubmitChanges();
                        }
                        else
                        {
                            throw new Exception("Logo Değiştirilemedi Kategori Bulunamadı");
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Alt kategori logo eklenirken hata  : " + ex.Message);
            }
        }

        [WebMethod]
        public static void altKategoriLogoEkle(int ID,string dosyaAdi)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    if (statics.kategoriYetkiKontrol(ID))
                    {
                        var akat = from ak in dc.HaberKategorileris
                                   where ak.KategoriID == ID
                                   select ak;
                        if (akat.Count() > 0)
                        {
                            HaberKategorileri hk =  akat.Single();
                            hk.Logo = dosyaAdi;
                            dc.SubmitChanges();
                        }
                        else
                        {
                            throw new Exception("Logo Değiştirilemedi Kategori Bulunamadı");
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }


                }
            }
            catch (Exception ex)
            {
                throw new Exception("Alt kategori logo eklenirken hata  : " + ex.Message);
            }
        }
        
        [WebMethod]
        public static altKategori altKategoriGetir(int ID)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    
                    if (statics.kategoriYetkiKontrol(ID))
                    {
                        var akat = from ak in dc.HaberKategorileris
                                 where ak.KategoriID == ID
                                 select new altKategori {kategoriID = ak.KategoriID,facebookAdi = ak.FBAdresi,kategoriAdi = ak.KategoriAdi,paylasmaSuresi = ak.PaylaşmaSuresi.HasValue?ak.PaylaşmaSuresi.Value:0 ,tekrarSayisi = ak.TekrarSayisi.HasValue?ak.TekrarSayisi.Value:0,twitterAdi = ak.TwitterScreenName,logo = ak.Logo,FBtoken = ak.FBToken,FBuid= ak.FBUID,sira = ak.Sira.HasValue?ak.Sira.Value:0,gpno = ak.GplusNo };
                        if (akat.Count() > 0)
                        {
                            return akat.Single();
                        }
                        else
                        {
                            return null;
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }
                    

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Üst kategori değiştirilirken hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static void ustKategoriDegistir(int ID,string kategoriAdi,char ozelSayfa,int sira)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    if (kategoriAdi == null || kategoriAdi == "")
                    {
                        throw new Exception("Kategori Adı Boş Geçilemez");
                    }
                    if (statics.kategoriYetkiKontrol(ID))
                    {
                        var kat = from k in dc.HaberKategorileris
                                  where k.KategoriID == ID
                                  select k;
                        if (kat.Count() > 0)
                        {
                            HaberKategorileri hk = kat.Single();
                            hk.KategoriAdi = kategoriAdi;
                            hk.OzelSayfa = ozelSayfa;
                            hk.Sira = sira;
                            dc.SubmitChanges();
                        }
                    }
                    else
                    {
                        throw new Exception("Bu işlem için Yönetici yetkilerine sahip olmalısınız");
                    }
                    

                }
            }
            catch (Exception ex)
            {
                throw new Exception("Üst kategori değiştirilirken hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static List<kategoriListesi> KategoriListele()
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {


                    if (statics.KullaniciGrubuGetir() == "Yonetici" || statics.KullaniciGrubuGetir() == "Calisan")
                    {
                        List<kategoriListesi> kats = new List<kategoriListesi>();
                        var ustkategoriler = from k in dc.HaberKategorileris
                                          where k.UstKategoriID == -1
                                          orderby k.Sira ascending
                                          select new kategoriListesi { kategoriID = k.KategoriID, kategoriAdi = k.KategoriAdi, ustKategoriID = k.UstKategoriID.Value,fbOk = k.FBToken.Length > 0?'T':'F',twitOk = k.TwitterAccessToken.Length > 0 ?'T':'F',facebookUID = k.FBUID,FBtoken = k.FBToken,twitterToken = k.TwitterAccessToken,twitterTokenSecret= k.TwitterAccessTokenSecret,ozelSayfa = k.OzelSayfa.Value,sira = k.Sira.HasValue ? k.Sira.Value:0};
                      
                        
                            var altkategoriler = from k in dc.HaberKategorileris
                                                 where k.UstKategoriID != -1
                                                 orderby k.Sira descending, k.KategoriAdi descending 
                                                 select new kategoriListesi { kategoriID = k.KategoriID, kategoriAdi = k.KategoriAdi, ustKategoriID = k.UstKategoriID.Value, fbOk = k.FBToken.Length > 0 ? 'T' : 'F', twitOk = k.TwitterAccessToken.Length > 0 ? 'T' : 'F', facebookUID = k.FBUID, FBtoken = k.FBToken, twitterToken = k.TwitterAccessToken, twitterTokenSecret = k.TwitterAccessTokenSecret, ozelSayfa = k.OzelSayfa.Value, sira = k.Sira.HasValue ? k.Sira.Value : 0 };

                        if (statics.KullaniciGrubuGetir() == "Calisan")
                        {
                            Guid ku = statics.kullaniciGetir();
                            var yetkilikats = from kat in dc.KategoriYetkis
                                              where kat.KullaniciID == ku
                                              select kat.KategoriID;


                            altkategoriler = from k in dc.HaberKategorileris
                                                 where k.UstKategoriID != -1 && yetkilikats.Contains(k.KategoriID)
                                                 orderby k.UstKategoriID, k.Sira descending , k.KategoriAdi descending
                                                 select new kategoriListesi { kategoriID = k.KategoriID, kategoriAdi = k.KategoriAdi, ustKategoriID = k.UstKategoriID.Value, fbOk = k.FBToken.Length > 0 ? 'T' : 'F', twitOk = k.TwitterAccessToken.Length > 0 ? 'T' : 'F', facebookUID = k.FBUID, FBtoken = k.FBToken, twitterToken = k.TwitterAccessToken, twitterTokenSecret = k.TwitterAccessTokenSecret, ozelSayfa = k.OzelSayfa.Value, sira = k.Sira.HasValue ? k.Sira.Value : 0 };
                            var uk = altkategoriler.Select(t => t.ustKategoriID).Distinct().ToList();
                            if (uk.Count() > 0)
                            {
                                ustkategoriler = from k in dc.HaberKategorileris
                                                 where k.UstKategoriID == -1 && uk.Contains(k.KategoriID)
                                                 orderby k.Sira ascending
                                                 select new kategoriListesi { kategoriID = k.KategoriID, kategoriAdi = k.KategoriAdi, ustKategoriID = k.UstKategoriID.Value, fbOk = k.FBToken.Length > 0 ? 'T' : 'F', twitOk = k.TwitterAccessToken.Length > 0 ? 'T' : 'F', facebookUID = k.FBUID, FBtoken = k.FBToken, twitterToken = k.TwitterAccessToken, twitterTokenSecret = k.TwitterAccessTokenSecret, ozelSayfa = k.OzelSayfa.Value, sira = k.Sira.HasValue ? k.Sira.Value : 0 };
                            }
                            else
                            {
                                return null;
                            }
                        }
                        
                        kats.AddRange(ustkategoriler);
                        kats.AddRange(altkategoriler);

                        if (kats.Count() > 0)
                        {
                            return kats.ToList();
                        }
                        else
                        {   
                            return null;
                        }
                    }
                    else
                    {
                        Guid ku = statics.kullaniciGetir();
                        var kategoriler = from k in dc.HaberKategorileris join y in dc.KategoriYetkis on k.KategoriID equals y.KategoriID
                                          where y.KullaniciID ==  ku
                                          orderby k.Sira ascending 
                                          select new kategoriListesi { kategoriID = k.KategoriID, kategoriAdi = k.KategoriAdi, ustKategoriID = k.UstKategoriID.Value, ozelSayfa = k.OzelSayfa.Value, sira = k.Sira.HasValue ? k.Sira.Value : 0 };

                        if (kategoriler.Count() > 0)
                        {
                            return kategoriler.ToList();
                        }
                        else
                        {
                            return null;
                        }
                    }
                    
                    
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kategori listelenirken hata : " + ex.Message);
            }
        }


        [WebMethod]
        public static void KategoriEkle(string kategoriAdi,int ustKategoriID,char ozelsayfa,int sira)
        {
                try { 
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    
                    if (statics.KullaniciGrubuGetir() != "Yonetici")
                    {
                        throw new Exception("Yönetici dışında kategori eklenemez!");
                    }
                    if (sira == -1 )
                    {

                        sira = 0;

                    }
                    
                    HaberKategorileri hk = new HaberKategorileri();
                    hk.KategoriAdi = kategoriAdi;
                    hk.UstKategoriID = ustKategoriID;
                    hk.OzelSayfa = ozelsayfa;
                    hk.OlusturmaTarihi = DateTime.Now;
                    hk.Sira = sira;
                    dc.HaberKategorileris.InsertOnSubmit(hk);
                    dc.SubmitChanges();
                }
                }catch(Exception ex){
                    throw new Exception("Kategori eklenirken hata : "+ex.Message);
                }
        }
        [WebMethod]
        public static void KategoriSil(int katID)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    if (statics.KullaniciGrubuGetir() != "Yonetici")
                    {
                        throw new Exception("Yönetici dışında kategori silemez!");
                    }

                    var kategori = from k in dc.HaberKategorileris
                                   where k.KategoriID == katID
                                   select k;
                    if (kategori.Count() > 0)
                    {
                        HaberKategorileri haberK = kategori.First();
                        if (haberK.UstKategoriID == -1)
                        {

                            var altKategoriler = from ak in dc.HaberKategorileris
                                                 where ak.UstKategoriID == katID
                                                 select ak;
                            if (altKategoriler.Count() > 0)
                            {
                                throw new Exception("Üst kategoriyi silmeden önce alt kategorileri silmelisiniz.");
                            }
                        }

                        var gonderimler = from g in dc.HaberGonderims 
                                          where g.KategoriID == katID
                                              select g;                       
                        
                        dc.HaberKategorileris.DeleteAllOnSubmit(kategori);
                        dc.HaberGonderims.DeleteAllOnSubmit(gonderimler);
                        dc.SubmitChanges();

                    }
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Kategori eklenirken hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<retClass> UstKategoriComboGetir()
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var cats = from cat in dc.HaberKategorileris
                               where cat.UstKategoriID == -1
                               select new retClass { val = cat.KategoriID, text = cat.KategoriAdi };
                    if (cats.Count() > 0)
                    {
                        return cats.ToList();
                    }
                    else
                    {
                        return null;
                    }
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Kategori Eklenirken Hata : " +ex.Message);
            }   
        }
        [WebMethod]
        public static void tvProgramEkle(string dosyaAdi, string programAdi)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında program eklenemez!");
                }
                if (programAdi== ""){
                    throw new Exception("Program Adı Giriniz");
                }
                if (dosyaAdi == "")
                {
                    throw new Exception("Dosya Adı Giriniz");
                }
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    
                    TvProgram tv = new TvProgram();
                    tv.ProgramAdi = programAdi;
                    tv.VideoAdi = dosyaAdi;
                    dc.TvPrograms.InsertOnSubmit(tv);
                    dc.SubmitChanges();
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void yayinSil(int id)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var yayinlar = from y in dc.VideoYayinis
                                     where y.VideoYayinID == id
                                     select y;
                    if (yayinlar.Count() > 0)
                    {
                        programSil(yayinlar.First().TvProgram.ProgramID);
                        dc.SubmitChanges();


                    }



                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }


        
        [WebMethod]
        public static void varsayilanYap(int id)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    var tumprogramlar = from p in dc.TvPrograms                                        
                                        select p;
                    foreach (TvProgram tv in tumprogramlar)
                    {
                        tv.Varsayilan = 'F';
                        if (tv.ProgramID == id)
                        {
                            tv.Varsayilan = 'T';
                        }
                    }
                    dc.SubmitChanges();
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void programSil(int id)
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var programlar = from p in dc.TvPrograms
                                     where p.ProgramID == id
                                     select p;
                    if (programlar.Count() > 0)
                    {

                        var yayinlar = from y in dc.VideoYayinis
                                       where y.VideoID == id
                                       select y;
                        if (yayinlar.Count() > 0)
                        {
                            dc.VideoYayinis.DeleteAllOnSubmit(yayinlar);
                        }
                        statics.dosyaSil(HttpContext.Current.Server.MapPath("/haberTV/" + programlar.First().VideoAdi)); 
                        dc.TvPrograms.DeleteAllOnSubmit(programlar);
                        dc.SubmitChanges();
                       
                    }
                   


                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<tvYayinListesi> tvYayinListesiGetir()
        {
            try
            {
                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var yayinlar = from p in dc.VideoYayinis
                                   orderby p.BaslangicSaati
                                   select new tvYayinListesi {id = p.TvProgram.ProgramID, programAdi = p.TvProgram.ProgramAdi, videoDosyasi = p.TvProgram.VideoAdi, yayinID = p.VideoYayinID, baslangicSaati = p.BaslangicSaati.Value.ToShortTimeString()};
                    if (yayinlar.Count() > 0)
                    {
                        return yayinlar.ToList();
                    }
                    else
                    {
                        return null;
                    }


                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static List<tvProgramListesi> tvProgramListesiGetir()
        {
            try
            {       using(dcHaberDataContext dc= new dcHaberDataContext()){
                        var programlar = from p in dc.TvPrograms
                        select new tvProgramListesi{programAdi = p.ProgramAdi,programID = p.ProgramID,videoDosyasi = p.VideoAdi,varsayilan = p.Varsayilan};
                        if (programlar.Count() > 0)
                        {
                            return programlar.ToList();
                        }
                        else
                        {
                            return null;
                        }

            
                    }
	
            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void tvProgramDegistir(int id, string programAdi, string baslangicZamani)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında yayın eklenemez!");
                }
                if (baslangicZamani == "")
                {
                    throw new Exception("Baslangic Zamani Giriniz");
                }
                //if (bitisZamani == "")
                //{
                //    throw new Exception("Bitis Zamani Giriniz");
                //}

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {

                    var tvp = from t in dc.TvPrograms
                              where t.ProgramID == id
                              select t;
                    if (tvp.Count() > 0)
                    {
                        TvProgram tv = tvp.First();
                        tv.ProgramAdi = programAdi;
                        dc.SubmitChanges();
                        var vy = from v in dc.VideoYayinis
                                 where v.VideoID == tv.ProgramID
                                 select v;
                        if (vy.Count() > 0)
                        {
                            VideoYayini vyay = vy.First();
                            DateTime simdi = DateTime.Now;
                            DateTime bas = new DateTime(2012, 4, 20, int.Parse(baslangicZamani.Substring(0, 2)), int.Parse(baslangicZamani.Substring(3, 2)), 00);
                            vyay.BaslangicSaati = bas;
                            dc.SubmitChanges();
                        }
                    }
                    
                    

                    
                   

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void tvProgramYayinla(string dosyaAdi, string programAdi,string baslangicZamani)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında yayın eklenemez!");
                }
                if (baslangicZamani == "")
                {
                    throw new Exception("Baslangic Zamani Giriniz");
                }
                //if (bitisZamani == "")
                //{
                //    throw new Exception("Bitis Zamani Giriniz");
                //}

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    TvProgram tv = new TvProgram();
                    tv.ProgramAdi = programAdi;
                    tv.VideoAdi = dosyaAdi;
                    dc.TvPrograms.InsertOnSubmit(tv);
                    dc.SubmitChanges();

                    VideoYayini vy = new VideoYayini();
                    DateTime simdi = DateTime.Now;              
                    DateTime bas = new DateTime(2012, 4, 20, int.Parse(baslangicZamani.Substring(0, 2)), int.Parse(baslangicZamani.Substring(3, 2)), 00);
                    //DateTime bit = new DateTime(simdi.Year, simdi.Month, simdi.Day, int.Parse(bitisZamani.Substring(0, 2)), int.Parse(bitisZamani.Substring(3, 2)), 00);
                    vy.BaslangicSaati = bas;
                    //vy.BitisSaati = bit;
                    vy.VideoID = tv.ProgramID;

                    dc.VideoYayinis.InsertOnSubmit(vy);
                    dc.SubmitChanges();
                  
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static List<string> dosyaListesiGetir()
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında dosya listelenemez!");
                }
             

                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    string adres =  HttpContext.Current.Server.MapPath("~/reklamResimleri/");
                    List<string> str = new List<string>();
                    DirectoryInfo di = new DirectoryInfo( adres);
                    FileInfo[] rgFiles = di.GetFiles();
                    foreach (FileInfo fi in rgFiles)
                    {
                      str.Add(fi.Name);
                    }
                    return str;
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }

        [WebMethod]
        public static reklamYayinlari reklamTanimlariGetir()
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında dosya listelenemez!");
                }


                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    string degisim = statics.tanimGetir("REKLAMDEGISIM",false);
                    var rek = from r in dc.Reklams
                              select new reklamYayinlari{yayin1 = r.ReklamAlani1,yayin2=r.ReklamAlani2,tamboyAcik = r.TamBoy.Value,y1Acik  = r.Alan1.Value,y2Acik =  r.Alan2.Value,tamboyresim = r.TamBoyResim,reklamlink1 = r.alan1link,reklamlink2 = r.alan2link,tamboylink = r.tamboylink,degisimZamani = degisim };

                    return rek.Single();
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void reklamAlanTB(string t)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında dosya listelenemez!");
                }


                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var reklam = from re in dc.Reklams
                                 select re;
                    Reklam rm = reklam.Single();
                    rm.TamBoyResim = t;

                    dc.SubmitChanges();

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void reklamAlan2Degistir(string y2)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında dosya listelenemez!");
                }


                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var reklam = from re in dc.Reklams
                                 select re;
                    Reklam rm = reklam.Single();
                    rm.ReklamAlani2 = y2;

                    dc.SubmitChanges();

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void reklamAlan1Degistir(string y1)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında dosya listelenemez!");
                }


                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var reklam = from re in dc.Reklams
                                 select re;
                    Reklam rm = reklam.Single();
                    rm.ReklamAlani1 = y1;

                    dc.SubmitChanges();

                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }
        [WebMethod]
        public static void reklamTanimDegistir(char t,char yarim,char yarim2,int? reklamzamani,string reklam1link,string reklam2link,string tamboylink)
        {
            try
            {
                if (statics.KullaniciGrubuGetir() != "Yonetici")
                {
                    throw new Exception("Yönetici dışında dosya listelenemez!");
                }


                using (dcHaberDataContext dc = new dcHaberDataContext())
                {
                    var reklam = from re in dc.Reklams
                                 select re;
                    Reklam rm = reklam.Single();
                    rm.Alan1 = yarim;
                    rm.Alan2 = yarim2;
                    rm.TamBoy = t;
                    rm.alan1link = reklam1link;
                    rm.alan2link = reklam2link;
                    rm.tamboylink = tamboylink;
                    var tanim = from ta in dc.Tanimlars
                                where ta.Tanım == "REKLAMDEGISIM"
                                select ta;
                    tanim.First().Parametre = reklamzamani.Value.ToString();
                    dc.SubmitChanges();
                    
                }

            }
            catch (Exception ex)
            {
                throw new Exception("Program Eklenirken Hata : " + ex.Message);
            }
        }

    }

      

    
}